#define _CRT_SECURE_NO_WARNINGS

//#include <stdio.h>

//struct Stu
//{
//	int i;
//	int arr[0];
//};

//struct Stu
//{
//	int i;
//	int arr[];
//};
//
//int main()
//{
//	printf("%zd\n", sizeof(struct Stu));
//	return 0;
//}
//
// 
//#include <stdio.h>
//#include <stdlib.h>
//
//typedef struct Stu
//{
//	int i;
//	int arr[];
//}Stu;
//
//int main()
//{
//	Stu* p = (Stu*)malloc(sizeof(Stu));
//	scanf("%d", &p->i);
//	Stu* tmp = (Stu*)realloc(p, sizeof(Stu) + p->i * sizeof(int));
//	if (tmp == NULL)
//	{
//		perror("realloc");
//		return 1;
//	}
//	p = tmp;
//	for (int j = 0; j < p->i; j++)
//	{
//		p->arr[j] = j;
//		printf("%d ", p->arr[j]);
//	}
//  free(p);
//  P = NULL;
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>

typedef struct Stu
{
	int i;
	int* arr;
}Stu;

int main()
{
	Stu* p = (Stu*)malloc(sizeof(Stu));
	scanf("%d", &p->i);
	int* tmp = (int*)malloc(p->i * sizeof(int));
	if (tmp == NULL)
	{
		perror("malloc");
		return 1;
	}
	p->arr = tmp;
	for (int j = 0; j < p->i; j++)
	{
		p->arr[j] = j;
		printf("%d ", p->arr[j]);
	}
	free(p->arr);
	p->arr = NULL;
	free(p);
	p = NULL;
	return 0;
}